package com.bang.study.prototype;

/**
 * @ClassName: Robot
 * @author: BANG
 * @Date: 2019/10/28 13:40
 * @Version: 1.0
 * @Modified By:
 * @Desc: 原型模式
 * 原型模式通常适用于以下场景。
 * 1. 对象之间相同或相似，即只是个别的几个属性不同的时候。
 * 2. 对象的创建过程比较麻烦，但复制比较简单的时候。
 */
public class Robot implements Cloneable {

    private String version;

    private String name;

    public Robot() {
    }

    public Robot(String version, String name) {
        this.version = version;
        this.name = name;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "Robot{" +
                "version='" + version + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        Robot robot = new Robot("V1", "金刚");
        Object clone = robot.clone();
        if (clone.equals(robot)) {
            System.out.println("TRUE");
        } else {
            System.out.println("FALSE");
        }

    }
}
